package br.com.invest.action;

import br.com.invest.model.Acao;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Scope;

/**
 *
 * @author Kirmaier
 */
//@Name("CotacaoController")
@Scope(ScopeType.SESSION)
public class BuscarCotacao_OLD {

    private String cotacao;
    @org.jboss.seam.annotations.datamodel.DataModel("cotacoesDM")
    private List<Properties> cotacoes;
    private List<String> nomesCotacoes;
    //private DataModel cotacoesDM;
    @In
    private Session investDB;

    @Factory("cotacoesDM")
    public String initCotacao() {
        gerarListaCotacoes();
        return null;
    }

    public void init() {
        List<Acao> listaAcoes = investDB.createCriteria(Acao.class).addOrder(Order.asc("cod_acao")).list();
        if (listaAcoes != null) {
            for (Acao a : listaAcoes) {
                gerarCotacao(a.getPrefixo());
            }
        }
    }

    private Properties gerarCotacao(String nome) {
        Properties result = new Properties();

        try {
            String[] siglaNome = nome.split("-");
            //Properties propriedades = new Properties();

            //   result.setProperty("Ultima transacao", "valor");

            //URL url = new URL("http://br.finance.yahoo.com/d/quotes.csv?s=PETR4.SA&f=.csv");
            URL url = new URL("http://br.finance.yahoo.com/d/quotes.csv?s=" + siglaNome[0] + "&f=sl1d1t1c1ohgv&e=.csv");

            URLConnection con = url.openConnection();

            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));

            String inputLine = null;

            inputLine = br.readLine();
            br.close();
            String s[] = null;
            if (inputLine.contains(",")) {
                s = inputLine.split(",");
            } else {
                s = inputLine.split(";");
            }
            result.setProperty("Sigla", siglaNome[0]);
            result.setProperty("Nome", siglaNome[1]);
            result.setProperty("Acao", s[0]);
            result.setProperty("Ultima transacao", s[1]);
            result.setProperty("Data", s[2]);
            result.setProperty("Hora", s[3]);
            if (s[4].charAt(0) == '+') {
                result.setProperty("Percentual", "<span style='color:blue'>" + s[4] + "</span>");
            } else if (s[4].charAt(0) == '-') {
                result.setProperty("Percentual", "<span style='color:red'>" + s[4] + "</span>");
            } else {
                result.setProperty("Percentual", s[4]);
            }

            result.setProperty("Valor de abertura", s[5]);
            result.setProperty("Máximo de venda", s[6]);
            result.setProperty("Minimo de venda", s[7]);
            result.setProperty("Volume", s[8]);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return result;
    }

    private void gerarListaCotacoes() {
        nomesCotacoes = new ArrayList<String>(0);

        //Adiciona todas empresas/acões na lista

        nomesCotacoes.add("ALLL11.SA-ALL AMER LAT");
        nomesCotacoes.add("AMBV4.SA-AMBEV PN");
        nomesCotacoes.add("ARCZ6.SA-ARACRUZ PNB N1");
        nomesCotacoes.add("BTOW3.SA-B2W VAREJO ON NM");
        nomesCotacoes.add("BVMF3.SA-BMF BOVESPA ON EDJ NM");
        nomesCotacoes.add("BBDC4.SA-BRADESCO PN N1");
        /**
        nomesCotacoes.add("BRAP4.SA-BRADESPAR PN N1");
        nomesCotacoes.add("BBAS3.SA-BRASIL ON NM");
        nomesCotacoes.add("BRTP3.SA-BRASIL T PAR ON N1");
        nomesCotacoes.add("BRTP4.SA-BRASIL T PAR PN N1");
        nomesCotacoes.add("BRTO4.SA-BRASIL TELEC PN N1");
        nomesCotacoes.add("BRKM5.SA-BRASKEM PNA N1");
        nomesCotacoes.add("CCRO3.SA-CCR RODOVIAS ON NM");
        nomesCotacoes.add("CLSC6.SA-CELESC PNB N2");
        nomesCotacoes.add("CMIG4.SA-CEMIG PN N1");
        nomesCotacoes.add("CESP6.SA-CESP PNB N1");
        nomesCotacoes.add("CGAS5.SA-COMGAS PNA");
        nomesCotacoes.add("CPLE6.SA-COPEL PNB N1");
        nomesCotacoes.add("CSAN3.SA-COSAN ON NM");
        nomesCotacoes.add("CPFE3.SA-CPFL ENERGIA ON NM");
        nomesCotacoes.add("CYRE3.SA-CYRELA REALT ON NM");
        nomesCotacoes.add("DURA4.SA-DURATEX PN N1");
        nomesCotacoes.add("ELET3.SA-ELETROBRAS ON N1");
        nomesCotacoes.add("ELET6.SA-ELETROBRAS PNB N1");
        nomesCotacoes.add("ELPL6.SA-ELETROPAULO PNB N2");
        nomesCotacoes.add("EMBR3.SA-EMBRAER ON NM");
        nomesCotacoes.add("GFSA3.SA-GAFISA ON NM");
        nomesCotacoes.add("GGBR4.SA-GERDAU PN N1");
        nomesCotacoes.add("GOAU4.SA-GERDAU MET PN N1");
        nomesCotacoes.add("GOLL4.SA-GOL PN N2");
        nomesCotacoes.add("ITAU4.SA-ITAUBANCO PN ED N1");
        nomesCotacoes.add("ITSA4.SA-ITAUSAPN N1");
        nomesCotacoes.add("JBSS3.SA-JBS ON NM");
        nomesCotacoes.add("KLBN4.SA-KLABIN S/A PN N1");
        nomesCotacoes.add("LIGT3.SA-LIGHT S/A ON NM");
        nomesCotacoes.add("LAME4.SA-LOJAS AMERIC PN INT");
        nomesCotacoes.add("LREN3.SA-LOJAS RENNER ON NM");
        nomesCotacoes.add("NATU3.SA-NATURA ON NM");
        nomesCotacoes.add("NETC4.SA-NET PN N2");
        nomesCotacoes.add("BNCA3.SA-NOSSA CAIXA ON NM");
        nomesCotacoes.add("PCAR4.SA-P.ACUCAR-CBD PN N1");
        nomesCotacoes.add("PRGA3.SA-PERDIGAO S/A ON NM");
        nomesCotacoes.add("PETR3.SA-PETROBRAS ON");
        nomesCotacoes.add("PETR4.SA-PETROBRAS PN");
        nomesCotacoes.add("RDCD3.SA-REDECARD ON NM");
        nomesCotacoes.add("RSID3.SA-ROSSI RESID ON NM");
        nomesCotacoes.add("SBSP3.SA-SABESP ON NM");
        nomesCotacoes.add("SDIA4.SA-SADIA S/A PN N1");
        nomesCotacoes.add("CSNA3.SA-SID NACIONAL ON ED");
        nomesCotacoes.add("CRUZ3.SA-SOUZA CRUZ ON");
        nomesCotacoes.add("TAMM4.SA-TAM S/A PN N2");
        nomesCotacoes.add("TNLP3.SA-TELEMAR ON EJ");
        nomesCotacoes.add("TNLP4.SA-TELEMAR PN EJ");
        nomesCotacoes.add("TMAR5.SA-TELEMAR N L PNA");
        nomesCotacoes.add("TLPP4.SA-TELESP PN");
        nomesCotacoes.add("TCSL3.SA-TIM PART S/A ON");
        nomesCotacoes.add("TCSL4.SA-TIM PART S/A PN");
        nomesCotacoes.add("TRPL4.SA-TRAN PAULIST PN N1");
        nomesCotacoes.add("UGPA4.SA-ULTRAPAR PN N1");
        nomesCotacoes.add("UBBR11.SA-UNIBANCO UNT N1");
        nomesCotacoes.add("USIM3.SA-USIMINAS ON EDJ N1");
        nomesCotacoes.add("USIM5.SA-USIMINAS PNA EDJ N1");
        nomesCotacoes.add("VCPA4.SA-V C P PN N1");
        nomesCotacoes.add("VALE3.SA-VALE R DOCE ON N1");
        nomesCotacoes.add("VALE5.SA-VALE R DOCE PNA N1");
        nomesCotacoes.add("VIVO4.SA-VIVO PN");
*/
        cotacoes = new ArrayList<Properties>(0);

        for (String nc : nomesCotacoes) {
            cotacoes.add(gerarCotacao(nc));
        }

    }

    public String getCotacao() {
        return cotacao;
    }
    
    public void setCotacao(String cotacao) {
        this.cotacao = cotacao;
    }

    public List<Properties> getCotacoes() {
        return cotacoes;
    }

    public void setCotacoes(List<Properties> cotacoes) {
        this.cotacoes = cotacoes;
    }

    public List<String> getNomesCotacoes() {
        return nomesCotacoes;
    }

    public void setNomesCotacoes(List<String> nomesCotacoes) {
        this.nomesCotacoes = nomesCotacoes;
    }

    /*   public DataModel getCotacoesDM() {
    
    cotacoesDM = new ListDataModel(cotacoes);
    
    return cotacoesDM;
    }
    
    public void setCotacoesDM(DataModel cotacoesDM) {
    this.cotacoesDM = cotacoesDM;
    }*/
}